home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / utildisk 6 omitech.adf / DOCS / raster.s < prev    next >
Text File  |  1990-03-10  |  2KB  |  132 lines

  1. **************************
  2. ** Raster-Demonstration **
  3. ** -------------------- **
  4. ** ©'90 MMS of Level 4  **
  5. **************************
  6.  
  7. Anz_Lines=    200            ; Anzahl der Rasterzeilen
  8. Length=        15            ; Anzahl der Farben bei Colors
  9. Number=        10            ; Anzahl der Balken
  10. Distance=    7            ; Abstand der Balken in Pixeln
  11.  
  12.     jmp    $70000
  13.     org    $70000
  14.     load    $70000
  15.  
  16. o:    move.l    #Start,$80
  17.     trap    #0
  18.     clr.l    d0
  19.     rts
  20.  
  21. Start:    move.w    #$2700,sr
  22.     move.w    #$8400,$dff096
  23.  
  24.     bsr.L    Init_Raster        ; Alles initialisieren
  25.  
  26.     move.l    #co,$dff080        ; Copper einschalten
  27.  
  28. Sync:    cmp.b    #$f0,$dff006
  29.     bne.s    Sync
  30.     
  31.     bsr.L    Clr_Raster        ; Copperfarben loeschen
  32.     bsr.L    Do_Raster        ; Raster aufbauen
  33.  
  34.     btst    #6,$bfe001        ; Mouse testen
  35.     bne.L    Sync
  36.  
  37.     lea    GfxName,a1        ; Copper zurueckschalten
  38.     move.l    $4,a6
  39.     jsr    -408(a6)
  40.     move.l    d0,a1
  41.     move.l    $26(a1),$dff080
  42.     jsr    -414(a6)
  43.  
  44.     rte
  45.  
  46. GfxName:    dc.b    "graphics.library",0
  47. even
  48.  
  49. co:                    ; Copperliste
  50. Raster:    blk.l    Anz_Lines+1*2,$fffffffe
  51.     dc.w    $ffff,$fffe
  52.  
  53. Init_Raster:
  54.     lea    Raster,a0        ; Raster in Copperliste
  55.     move.l    #$2901fffe,d0
  56.     move.l    #$01800000,d1
  57.     move.w    #Anz_Lines,d7
  58. Loop:    move.l    d0,(a0)+        ; schreiben
  59.     move.l    d1,(a0)+
  60.     add.l    #$01000000,d0
  61.     dbf    d7,Loop
  62.  
  63.     rts
  64.  
  65. Clr_Raster:
  66.     lea    Raster+4+2,a0        ; Alle Farbdaten im Copper
  67.     move.w    #Anz_Lines,d7
  68. Clear:    clr.w    (a0)            ; loeschen
  69.     lea    8(a0),a0
  70.     dbf    d7,Clear
  71.     rts
  72.  
  73. Do_Raster:
  74.     move.w    #Number-1,d7
  75.     move.w    Pos,d0
  76.     move.w    dir,d5
  77. Schreiben:
  78.     bsr.s    Set_One_Raster        ; Balken an Stelle d0 schreiben
  79.     add.w    d5,d0            ; naechsten Balken ausrechnen
  80.     cmp.w    #Anz_Lines-Length,d0
  81.     blt.s    OK
  82.     neg.w    d5
  83.     add.w    d5,d0
  84. OK:    tst.w    d0
  85.     bge    OK2
  86.     neg.w    d5
  87.     add.w    d5,d0
  88. OK2:
  89.     dbf    d7,Schreiben
  90.  
  91.     move.w    Pos,d0            ; Pos fuer naechsten ersten 
  92.     add.w    Dir,d0            ; Balken ausrechnen
  93.     cmp.w    #Anz_Lines-Length,d0
  94.     blt.s    OK3
  95.     neg.w    Dir
  96.     add.w    Dir,d0
  97. OK3:    tst.w    d0
  98.     bge    OK4
  99.     neg.w    Dir
  100.     add.w    Dir,d0
  101. OK4:
  102.     move.w    d0,Pos
  103.     rts
  104.  
  105. Set_One_Raster:
  106.     movem.w    d0/d7,-(a7)        ; d0 zwischenspeichern
  107.  
  108.     lea    Colors,a1        ; Farben des Balkens
  109.  
  110.     lea    Raster+4+2,a0        ; Eintrag in Copperliste
  111.     lsl.w    #3,d0            ; Raster+6+(8*Hoehe)
  112.     lea    (a0,d0.w),a0
  113.  
  114.     move.w    #Length-1,d7        ; Laenge des Balkens
  115. Loop_Fill:
  116.     move.w    (a1)+,(a0)        ; In Copperliste schreiben
  117.     lea    8(a0),a0
  118.     dbf    d7,Loop_Fill
  119.  
  120.     movem.w    (a7)+,d0/d7        ; d0 wieder holen
  121.     rts
  122.  
  123. Colors:                    ; Farbdaten fuer einen Balken
  124.  
  125.     dc.w    $0313,$0535,$0757,$0979,$0b9b,$0dbd,$0fdf,$0fff
  126.     dc.w    $0fdd,$0dbb,$0b99,$0977,$0755,$0533,$0311,-1
  127.  
  128. Pos:    dc.w    0            ; Aktuelle Position des
  129.                     ; 1. zu schreibenden Balkens
  130. Dir:    dc.w    Distance        ; Additionswert (+/- Distance)
  131.  
  132.